package bit_pratice.day12;

import java.util.Scanner;

/**
 * 链接：https://www.nowcoder.com/questionTerminal/f8538f9ae3f1484fb137789dec6eedb9
 * 任意一个偶数（大于2）都可以由2个素数组成，组成偶数的2个素数有很多种情况，本题目要求输出组成指定偶数的两个素数差值最小的素数对。
 * 数据范围：输入的数据满足 4 \le n \le 1000 \4≤n≤1000
 **/
//输入：大于2的偶数
//输出：从小到大输出两个素数
public class 组成一个偶数最接近的两个素数 {
    //求差值最小，从中间开始找【两个数得都是素数并且和是一个偶数，那么如果偶数n，一个素数i,另一个素数就是n-i】
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();//输入一个偶数
        for (int i = n/2; i < n; i++) {
            //从一半开始向后找（i是较大的素数，另一个是n-i）
            if(isPrime(i)&&isPrime(n-i)){
                //两个数都是素数时，结果是最终结果
                System.out.println(n-i);
                System.out.println(i);
                break;
            }
        }
    }

    private static boolean isPrime(int num) {
        //判断num是否是素数——素数的因数只有1和它本身，所以它不会被除此以外其他任何数整除
        for (int i = 2; i*i <= num; i++) {
            if(num%i==0){
                return false;
            }
        }
        return true;
    }
}
